# 与list不同的是，tuple不可变
# 所以，字符串有点像元组
# string、list 和 tuple 都属于 sequence（序列）

tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')

print (tuple)             # 输出完整元组
print (tuple[0])          # 输出元组的第一个元素
print (tuple[1:3])        # 输出从第二个元素开始到第三个元素
print (tuple[2:])         # 输出从第三个元素开始的所有元素
print (tinytuple * 2)     # 输出两次元组
print (tuple + tinytuple) # 连接元组

"""
('abcd', 786, 2.23, 'runoob', 70.2)
abcd
(786, 2.23)
(2.23, 'runoob', 70.2)
(123, 'runoob', 123, 'runoob')
('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')
"""

# 虽然不可变，但是可以包含可变的对象
# tuple 跟 list一样：有各种 切面，算术(+*) 操作符

t1 = ()
print(t1)
print(())
t2 = (20,) # 单元素的元组，需要一个逗号区分
t3 = (20)
print(type(t2), type(t3))

'''
()
()
<class 'tuple'> <class 'int'>
'''

tuple2 = ( True, tuple, [], [1, 2, 3])
# (True, ('abcd', 786, 2.23, 'runoob', 70.2), [], [1, 2, 3])
print(tuple2)
